package gui;

import java.awt.event.*;
import java.util.*;

import javax.swing.*;
import utility.Time;
import business.*;

public class SemaineProfUI extends SemaineUI {

	private int idProf;

	public SemaineProfUI(Date debutSemaine, int matin, int aprem, int idProf) {
		super(debutSemaine, matin, aprem);
		this.idProf = idProf;
		load();
	}

	@Override
	public void load() {
		String[] intitules = { "8h00 - 9h30", "9h45 - 11h15", "11h30 - 13h00",
				"14h00 - 15h30", "15h45 - 17h15", "17h30 - 19h00" };

		Calendar c = Calendar.getInstance();

		EnseignantBL ensBL = new EnseignantBL(idProf);
		PeriodeBL periodeBL = new PeriodeBL();

		for (int periodeCourante = 0; periodeCourante < nbPeriodes; periodeCourante++) {
			contenu.add(new IntitulePeriodeUI(intitules[periodeCourante]));
			/* Reinitialiser le calendrier au debut de la semaine */
			c.set(debutSemaine.getYear(), debutSemaine.getMonth(), debutSemaine
					.getDate());
			for (int jourCourant = 0; jourCourant < nbJours; jourCourant++) {
				String dateString = Time.dateToString(new Date(c
						.get(Calendar.YEAR), c.get(Calendar.MONTH), c
						.get(Calendar.DATE)));

				int idPeriode = periodeBL.getIdPeriode(dateString,
						periodeCourante);
				PeriodeUI periode = new PeriodeUI(this, idPeriode, new PeriodePopup(
						idPeriode));

				ArrayList<SeanceBL> seanceList = ensBL
						.getListeSeances(idPeriode);
				for (SeanceBL seanceBL : seanceList) {
					periode.add(new SeanceUI(periode, seanceBL.getId(), seanceBL
							.getCouleur(), seanceBL.getNom(), "TD", seanceBL
							.getNomProf(), seanceBL.getNomAnneeEtude(),
							seanceBL.getNomGroupe(), seanceBL.getNomSalle()));
				}

				contenu.add(periode);

				c.add(Calendar.DATE, 1);
			}
		}
	}

	private class PeriodePopup extends JPopupMenu implements ActionListener {
		private JMenuItem ajouter = new JMenuItem("Ajouter une séance");
		private int idPeriode;

		public PeriodePopup(int idPeriode) {
			this.idPeriode = idPeriode;
			ajouter.addActionListener(this);
			add(ajouter);
		}

		public void actionPerformed(ActionEvent e) {
			if (e.getSource() == ajouter) {
				FrameAjoutSeanceProf frameAjout = new FrameAjoutSeanceProf(-1,
						idProf, idPeriode);
				frameAjout.setVisible(true);
			}

		}

	}

}
